package com.kellyfeng.frame4j.util;
import java.io.*;
import java.util.*;
import org.slf4j.*;
/**
 * @author Administrator
 *属性文件工具集
 */
public final class PropsUtil {
	private static final Logger LOGGER = LoggerFactory.getLogger(PropsUtil.class);
	
	/**
	 * @param fileName
	 * @return 
	 * 加载属性文件
	 */
	public static Properties loadProsp(String fileName){
		Properties props = null;
		InputStream is = null;
		try{
			is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
			if(is == null){
				throw new FileNotFoundException(fileName + "file is not found");
			}
			props = new Properties();
			props.load(is);
		}
		catch(IOException e){
			LOGGER.error("load properties file failuer", e);
		}
		finally{
			if(is != null){
				try{
					is.close();
				}
				catch(IOException e){
					LOGGER.error("close input stream failure", e);
				}
			}
		}
		return props;
	}
	
	/**
	 * @param props
	 * @param key
	 * @return 
	 * 获取字符型属性(默认值为空字符串)
	 */
	public static String getString(Properties props, String key){
		return getString(props, key, "");
	}
	/**
	 * @param props
	 * @param key
	 * @param defaultValues
	 * @return 
	 * 获取字符型属性(可指定默认值>
	 */
	public static String getString(Properties props, String key, String defaultValue){
		String value = defaultValue;
		if(props.contains(key)){
			value = props.getProperty(key);
		}
		return value;
	}
	/**
	 * @param props
	 * @param key
	 * @return 
	 * 获取数值型属性(默认值为0)
	 */
	public static int getInt(Properties props, String key){
		return getInt(props, key, 0);
	}
	/**
	 * @param pros
	 * @param key
	 * @param defaultValues
	 * @return 
	 * 获取数值型属性(可指定默认值)
	 */
	public static int getInt(Properties props, String key, int defaultValue){
		int value = defaultValue;
		if(props.contains(key)){
			value = CastUtil.castInt(props.getProperty(key));
		}
		return value;
	}
	/**
	 * @param props
	 * @param key
	 * @return 
	 * 获取布尔型属性(默认值为false)
	 */
	public static boolean getBoolean(Properties props, String key){
		return getBoolean(props, key, false);
	}
	/**
	 * @param props
	 * @param key
	 * @param defaultValue
	 * @return 
	 * 获取布尔型属性(可指定默认值)
	 */
	public static boolean getBoolean(Properties props, String key, boolean defaultValue){
		boolean value = defaultValue;
		if(props.contains(key)){
			value = CastUtil.castBoolean(props.getProperty(key));
		}
		return value;
	}
}
